﻿#define _CRT_SECURE_NO_WARNINGS

//struct A {
//
//	long a1;
//
//	short a2;
//
//	int a3;
//
//	int* a4;
//
//};
//int main()
//{
//	cout << sizeof(A) << endl;
//	return 0;
//}

//class student
//{
//	//成员函数
//public :
//	void init(const char* name, int age, int score)
//	{
//		_name = name;
//		_age = age;
//		_score = score;
//	}
//	void print()
//	{
//		cout<<"学生名字：" << _name<<endl<<"学生年龄：" << _age <<endl
//			<<"学生得分："<< _score << endl;
//	}
//
//	//成员变量
//private:
//	 const char *_name;
//	int _age;
//	int _score;
//};
//int main()
//{
//	student s1;
//	s1.init("czy", 18, 100);
//	s1.print();
//	return 0;
//}
//bool operator==(Date d2) 
// //是不是就相当于 bool operator==(Date*const this,Date d2)
//{
//	return _year == d2._year
//		&& _month == d2._month
//		&& _day == d2._day;
//}


//#include<iostream>
//using namespace std;
//class student
//	{
//		//成员函数
//	public :
//		void init(const char* name, int age, int score);
//		void print();
//		//成员变量
//		//这里没有实际的空间只是声明
//	private:
//		 const char *_name;
//		int _age;
//		int _score;
//	};
//
//// 声明和定义分离，需要指定类域
//void student::init(const char* name, int age, int score)
//{
//	{
//		_name = name;
//		_age = age;
//		_score = score;
//	}
//}
//void student::print()
//{
//	cout << "学生名字：" << _name << endl << "学生年龄：" << _age << endl
//		<< "学生得分：" << _score << endl;
//}
//int main()
//{
//	//类实例化后s1才有了空间
//	student s1;
//	s1.init("czy", 18, 100);
//	s1.print();
//	return 0;
//}
#include<iostream>
using namespace std;
class Date
{
public:
	// void Init(Date* const this, int year, int month, int day)
	void Init(int year, int month, int day)
	{
		// 编译报错：error C2106: “=”: 左操作数必须为左值
		// this = nullptr;
		// this->_year = year;
		_year = year;
		this->_month = month;
		this->_day = day;
	}
	void Print()
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}
private:
	// 这⾥只是声明，没有开空间
	int _year;
	int _month;
	int _day;
};
int main()
{
	// Date类实例化出对象d1和d2
	Date d1;
	Date d2;
	// d1.Init(&d1, 2024, 3, 31);
	d1.Init(2024, 3, 31);
	d1.Print();
	d2.Init(2024, 7, 5);
	d2.Print();
	return 0;
}